home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 206_01 / checks.doc < prev    next >
Text File  |  1980-01-01  |  92KB  |  1,818 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.                                CHECK REGISTER PROGRAM
  26.  
  27.                                 CP/M-80 Version 1.0
  28.  
  29.                                      June 1986
  30.  
  31.  
  32.  
  33.  
  34.  
  35.                          Copyright (c) 1986 by WoolleyWare
  36.                                 All Rights Reserved
  37.  
  38.                                                              v.1.0, Page i
  39.  
  40.  
  41.  
  42.                               USER-SUPPORTED SOFTWARE
  43.  
  44.       This program is distributed as User-Supported Software.  You are
  45.       encouraged to copy and share this program and related files with the
  46.       following conditions:
  47.  
  48.        1.  Except for a nominal handling fee (perhaps $5 or $10), no financial
  49.            or other consideration may be charged for distribution.
  50.  
  51.        2.  All original files must be distributed together in unmodified form.
  52.            If appropriate, you may include additional files, so long as they
  53.            are identified separately from the originals.
  54.  
  55.        3.  The copyright notice must not be altered, bypassed, or removed from
  56.            the original files.  As described in this document, you may delete
  57.            the copyright notice from your private version of the program.
  58.  
  59.       If you find this program useful, your contribution in proportion to its
  60.       value (perhaps $25) will be appreciated.  Note that whatever amount you
  61.       send may be tax deductible as an expense toward improved management of
  62.       your financial records.  When you correspond, please identify which
  63.       operating system (CP/M-80) and version of the Check Register Program you
  64.       are using.  The version number is indicated in the default title line at
  65.       the top of the screen before your personalized title has been read from
  66.       the INF file; your copy may be more recent than the version available
  67.       when this document was prepared (1.0).  If you expect a response,
  68.       include a self-addressed stamped envelope.  Absolutely no phone calls,
  69.       please.
  70.  
  71.                                     Jim Woolley
  72.                                     WoolleyWare
  73.                                   5825 Pilar Court
  74.                                 San Jose, CA  95120
  75.  
  76.  
  77.  
  78.                                      DISCLAIMER
  79.  
  80.       WoolleyWare makes no representations or warranties with respect to the
  81.       contents hereof and specifically disclaims any implied warranties of
  82.       merchantability or fitness for any particular purpose.  WoolleyWare
  83.       reserves the right to revise this publication and to make changes from
  84.       time to time in the content hereof without obligation to notify any
  85.       person or organization of such revisions or changes.
  86.  
  87.  
  88.  
  89.                                      TRADEMARKS
  90.  
  91.       WordStar is a trademark of MicroPro International Corp.  SuperCalc is a
  92.       trademark of Sorcim Corp.  dBASE II is a trademark of Ashton-Tate.
  93.       MBASIC is a trademark of Microsoft.  CBASIC is a trademark of Compiler
  94.       Systems, Inc.  CP/M is a trademark of Digital Research Inc.
  95.  
  96.                                                              v.1.0, Page ii
  97.  
  98.  
  99.  
  100.                                       ABSTRACT
  101.  
  102.       The Check Register Program simplifies the task of maintaining one or
  103.       more checking accounts.  Three separate programs are included:
  104.  
  105.            CHECKS    The primary application, manages the current check
  106.                      register, including reconciliation of transactions which
  107.                      have cleared the bank.
  108.  
  109.            CLEARS    Maintains and summarizes transactions after they have
  110.                      cleared the bank, for historical review.
  111.  
  112.            CHECKSIN  Installs the CHECKS.SCR file, adapting CHECKS and CLEARS
  113.                      to your particular video display terminal or computer
  114.                      console.
  115.  
  116.       Sample data files are included for tutorial and demonstration purposes.
  117.       Commented C language source files are provided in lieu of further
  118.       support.
  119.  
  120.                                                              v.1.0, Page iii
  121.  
  122.  
  123.  
  124.                                  TABLE of CONTENTS
  125.  
  126.                                                              Page
  127.  
  128.                   TITLE PAGE
  129.                   USER-SUPPORTED SOFTWARE                      i
  130.                   DISCLAIMER                                   i
  131.                   TRADEMARKS                                   i
  132.                   ABSTRACT                                    ii
  133.                   TABLE of CONTENTS                          iii
  134.                   FEATURES                                     1
  135.                   REQUIREMENTS                                 2
  136.                   GENESIS and BIOGRAPHY                        2
  137.                   INSTALLATION                                 5
  138.                      LBR Distribution Library                  5
  139.                      CHECKS.SCR File and CHECKSIN Program      5
  140.                   DEMONSTRATION and TUTORIAL                   9
  141.                      CHECKS Program                            9
  142.                      Current Date and Yes/No Queries           9
  143.                      Cursor Movement                          10
  144.                      Save, Quit, and Done Commands            11
  145.                      New Entry and Date Field                 11
  146.                      Payee Field and Abreviations             12
  147.                      Category Field                           13
  148.                      Amount Field and Calculator              13
  149.                      Deposit Field                            15
  150.                      Clear Field                              15
  151.                      Balance Field                            16
  152.                      Insert/Delete Entry and Undo Commands    16
  153.                      Ordering Entries                         16
  154.                      Check Number                             17
  155.                      Print Command                            17
  156.                      Reconciliation                           18
  157.                      Done Command                             18
  158.                      Balance Brought Forward                  19
  159.                      CLEARS Program                           19
  160.                   EXECUTING the PROGRAM                       20
  161.                   INFORMATION FILE                            22
  162.                   GETTING STARTED                             24
  163.                      Beginning a New Register                 24
  164.                      Insufficient Disk Space                  25
  165.                   COMMANDS                                    25
  166.                      Cursor Movement Commands                 25
  167.                      Editing Commands                         26
  168.                      Calculator Commands                      27
  169.                      Save, Quit, and Done Commands            27
  170.                      Miscellaneous Commands                   28
  171.                   FUTURE PLANS                                28
  172.  
  173.                                                              v.1.0, Page 1
  174.  
  175.  
  176.  
  177.                                       FEATURES
  178.  
  179.       As you will surely admit, managing a checkbook by hand is fairly simple;
  180.       therefore, one of the primary design goals for this program was to make
  181.       using it at least as easy as the manual method.  This has been
  182.       accomplished by implementing the following features:
  183.  
  184.         o  The user interface is modeled after WordStar.  If you use WordStar,
  185.            you already know how to move the cursor, scroll pages, and edit
  186.            text.  If you are not familiar with WordStar, a convenient "help"
  187.            screen is readily available.
  188.  
  189.         o  Transaction date (month, day, and year) will default to that of the
  190.            previous entry.  Only changes need to be typed.  If you are
  191.            entering several transactions for the same month and year, only the
  192.            day might require revision.
  193.  
  194.         o  You may define abreviations for accounts that are paid repeatedly,
  195.            such as gas, electric, water, and telephone utilities, revolving
  196.            charge accounts, and supermarkets.  When an abreviation is entered,
  197.            the payee description will automatically expand to the full name
  198.            you have linked to the abreviation.
  199.  
  200.         o  Each entry may be assigned a category.  You may define your own
  201.            categories by use of a single character.  For example, you may use
  202.            H for household transactions and T for tax deductible entries.
  203.            Also, categories may be conveniently utilized to manage two or more
  204.            checkbooks within one account.
  205.  
  206.         o  Extended integer arithmetic is used to keep track of amounts
  207.            ranging from -3,276,899.99 thru +3,276,799.99 without losing any
  208.            pennies.
  209.  
  210.         o  A simple calculator may be used to add to or subtract from the
  211.            amount field of each entry.  A memory register is included, which
  212.            is retained each time the program is executed.
  213.  
  214.         o  Automatic transactions may be defined.  Examples include a monthly
  215.            loan payment which is automatically withdrawn from your account on
  216.            a certain day, or your salary which is automatically transferred
  217.            from your employer's bank to your account.
  218.  
  219.         o  Entries may be conveniently sorted to primary and secondary levels,
  220.            including date and payee, payee and date, category and date, or
  221.            amount and date.
  222.  
  223.         o  A reconciliation report itemizes checks, deposits, and current
  224.            balance for entries which have cleared the bank and for all entries
  225.            by category, including a total over all categories.
  226.  
  227.         o  Cleared entries are removed to a separate file, retaining only
  228.            active transactions in the check register.  An independent program
  229.            is provided to manage cleared entries.
  230.  
  231.       Features                                               v.1.0, Page 2
  232.  
  233.  
  234.  
  235.         o  The current check register, the reconciliation report, and an audit
  236.            trail of cleared entries may be printed for filing and backup.
  237.  
  238.         o  An installation program will quickly adapt the program to work with
  239.            your video display terminal or computer console.
  240.  
  241.       Commented C language source files are included.  If you require
  242.       additional features, feel free to add them.
  243.  
  244.  
  245.  
  246.                                     REQUIREMENTS
  247.  
  248.       The Check Register Program requires an 80 column x 24 row video display
  249.       with addressable cursor.  Various terminals and computer consoles are
  250.       supported.  The CP/M-80 operating system and one disk drive are
  251.       necessary.  An 80 column printer with FORM FEED control is desirable.
  252.  
  253.       For a single check register, the database of transactions is maintained
  254.       in two separate files, one for those which have not cleared the bank and
  255.       another for those which have.  The maximum number of active (uncleared)
  256.       entries is 128, which is generally sufficient for a very large family or
  257.       a very small business, assuming bank statements are received monthly.
  258.       Up to 384 cleared entries are kept in the database; for an average
  259.       family, this should be sufficient for about six months.  When the 384
  260.       limit is approached, older records may be marked for summary and
  261.       removal; each summary is retained in the database.  The program may be
  262.       used to manage more than one check register by defining separate sets of
  263.       database files.
  264.  
  265.       It is assumed that the CP/M Basic Input/Output System (BIOS) console
  266.       display function treats BACKSPACE as non-destructive; that is, the
  267.       cursor is moved to the previous character position on the same line
  268.       without changing the character.  Similarly, it is assumed that a LF
  269.       (line feed) character sent to the console from any location above the
  270.       24th line will move the cursor down one line without altering the
  271.       display.  Finally, it is assumed that a CR (carriage return) character
  272.       sent to the screen from any location will move the cursor to the
  273.       beginning of the same line (without line feed).  These assumptions are
  274.       not expected to be restricting.
  275.  
  276.       The Check Register Program was developed using WordStar, BDS C, and an
  277.       Osborne 1 59K CP/M 2.2 system with 52.5K transient program area (TPA).
  278.  
  279.  
  280.  
  281.                                GENESIS and BIOGRAPHY
  282.  
  283.       You might wish to skip this section until you have had a chance to see a
  284.       demonstration of the Check Register Program.  To do that, follow
  285.       instructions given in the Installation and the Demonstration and
  286.       Tutorial section.  You can return to this section after determining that
  287.       the Check Register Program is worth further consideration.  On the other
  288.       hand, you may already be convinced; in that case, the following
  289.       background information should be useful.
  290.  
  291.       Genesis and Biography                                  v.1.0, Page 3
  292.  
  293.  
  294.  
  295.  
  296.       When I bought my Osborne 1 computer in the Fall of '81, I had no
  297.       specific plans for its use.  I had been a nuclear engineer with General
  298.       Electric Company for 16 years; much of that time was spent developing
  299.       engineering computer programs for nuclear power reactors.  I had
  300.       experience with BASIC, FORTRAN, and assembly language.  My wife was
  301.       running a small business teaching microwave cooking.  My sons were
  302.       teenagers.  I thought the computer would help organize my wife's books
  303.       and the kids might learn something about technology.  The kids thought
  304.       they could play games with it.  I was especially interested in using the
  305.       computer to simplify managing our family checkbook.
  306.  
  307.       The Osborne 1 came bundled with CP/M, WordStar, SuperCalc, MBASIC, and
  308.       CBASIC.  I thought WordStar would get little use.  SuperCalc looked
  309.       handy for financial analysis.  But I knew I could write my own BASIC
  310.       programs whenever necessary.
  311.  
  312.       As it turned out, WordStar proved to be the most useful application by
  313.       far; I used it for correspondence, the kids used it for school, and my
  314.       wife used it to print recipes and shopping lists.  I set up SuperCalc
  315.       spreadsheets to keep track of utility bills and to help reconcile my
  316.       checkbook at the end of the month, but found it a little cumbersome.  I
  317.       discovered a public domain general ledger program to help with my wife's
  318.       business.  It was written in CBASIC, and I was able to adapt it to the
  319.       Osborne 1.
  320.  
  321.       But the thought of committing our check register to a BASIC program was
  322.       not appealing.  Maintaining the register by hand is fairly easy;
  323.       whatever is done by computer should be at least as simple, or it would
  324.       not be worth booting the disk.  I felt the performance of BASIC in terms
  325.       of memory capacity and speed would be insufficient to justify the effort
  326.       of struggling with BASIC's syntax and development environment.
  327.  
  328.       In the meantime, I decided to redirect my career from nuclear
  329.       engineering into computer engineering.  I joined a consulting firm and
  330.       began to develop small computer systems and software.  Currently I am
  331.       specializing in refrigeration control systems for huge cold storage
  332.       facilities servicing the food processing industry.
  333.  
  334.       Experience with the public domain (PD) general ledger program led to my
  335.       heavy involvement with the First Osborne Group (FOG).  For two years, I
  336.       served as Disk Librarian for FOG's rapidly growing collection of PD
  337.       programs.  It was very educational, leading to my interest in the C
  338.       programming language, but most of my spare time was consumed by
  339.       responsibilities to FOG.
  340.  
  341.       I was still interested in a program to aid with check register
  342.       management.  I found some PD SuperCalc templates, but they suffered from
  343.       SuperCalc's shortcomings.  Another PD dBASE II application looked
  344.       interesting, but I did not own a copy of dBASE.  I thought about
  345.       purchasing a commercial program, but they usually offered more features
  346.       than I required, such as budgeting or tax preparation.  I was concerned
  347.       that after buying a package, I would find that keeping the checkbook
  348.       manually remained simpler than using the computer.
  349.  
  350.       Genesis and Biography                                  v.1.0, Page 4
  351.  
  352.  
  353.  
  354.       When I found myself with some spare time during the Christmas season of
  355.       1985, I finally decided to write a program in C to address the
  356.       requirements I had in mind when I bought the computer four years
  357.       earlier.  Since my wife and I keep separate checkbooks with only one
  358.       joint account, I wanted to categorize transactions, so that our separate
  359.       balances could be easily maintained.  Since I am not a good typist, I
  360.       wanted to abreviate those accounts that were paid repeatedly, such as
  361.       telephone, water, and credit cards.  I wanted reasonable default dates,
  362.       eliminating the need to reenter the same values for each check or
  363.       deposit.  Since I sometimes forgot to record automatic transactions,
  364.       like a monthly loan payment to the bank, I wanted a feature that would
  365.       remember such things.  I decided to make the user interface similar to
  366.       WordStar, avoiding the need to learn another.  I thought it would be
  367.       useful to incorporate a simple calculator for the amount portion of each
  368.       entry.  I wanted to be able to sort entries in a variety of ways.  Above
  369.       all, I wanted to reduce the effort of reconciling the checkbook against
  370.       the monthly statement.
  371.  
  372.       As development progressed and I could see how useful the program was to
  373.       me, I began to think that others might be interested, too.  Since my
  374.       oldest son had just started college, the thought of another source of
  375.       income was attractive.  I decided to try the concept of User-Supported
  376.       Software distribution.  This seems to be a winner for both the user and
  377.       the developer.  Anyone can try the program without making a commitment.
  378.       If the program proves useful, they may contribute toward its development
  379.       in proportion to its worth.  The developer avoids the expense of
  380.       packaging and advertising, yet receives a just reward if the program has
  381.       any real value to others.
  382.  
  383.       I decided to go one step farther.  Many User-Supported Software programs
  384.       are distributed without the source files;  that is, only executable
  385.       files and a document file are usually provided.  As a user of such
  386.       programs, I've always wanted to have the source files, so that I could
  387.       better understand how the program worked.  That way, I knew that I could
  388.       add features, write separate interface programs, or correct any latent
  389.       bugs myself.  Also, I believe that the developer should be proud to
  390.       display his work.
  391.  
  392.       I decided to include the commented C language files in lieu of further
  393.       support.  After using the Check Register Program myself for several
  394.       months, I believe that it functions correctly.  If there are detailed
  395.       questions about how the program works, you or a friend familiar with C
  396.       are invited to investigate the source files.  If you require additional
  397.       features, feel free to add them.
  398.  
  399.       I will be interested in your written questions or comments, but do not
  400.       expect a response unless you include a self-addressed, stamped envelope.
  401.       Naturally, I cannot help you diagnose problems in your own modified
  402.       version of the program.  On the other hand, if you discover a genuine
  403.       bug in the original version, I will be indebted to you for identifying
  404.       it to me.  But absolutely no phone calls, please.
  405.  
  406.       One final request.  Feel free to distribute the Check Register Program
  407.       to your friends, but be sure to include all of the original files
  408.  
  409.       Genesis and Biography                                  v.1.0, Page 5
  410.  
  411.  
  412.  
  413.       unmodified.  You may add your revisions, so long as they are identified
  414.       separately from the originals.
  415.  
  416.  
  417.  
  418.                                     INSTALLATION
  419.  
  420.       LBR Distribution Library
  421.  
  422.       The Check Register Program is normally distributed as an LBR library
  423.       file containing several executable COM files, a squeezed (reduced in
  424.       size) document DQC file, several squeezed C language CQ and HQ files,
  425.       and other files which may or may not be squeezed.
  426.  
  427.       Because of size limitations, the DQC file may be supplied separate from
  428.       the LBR file which contains executable programs.  For the same reason,
  429.       the CQ and HQ files may be concatenated and provided as a single CQ file
  430.       separate from the program LBR file.  Alternatively, the DQC, CQ, and HQ
  431.       files may be distributed together, but in a separate documentation LBR
  432.       file.
  433.  
  434.       An appropriate public domain (PD) program such as LU, NULU, or LSWEEP
  435.       may be used to extract files from the LBR distribution library.  If your
  436.       disk will hold approximately 180 KB, you may wish to extract all except
  437.       the CQ, HQ, and DQC files onto one disk.  After extracting such files,
  438.       any which are squeezed (have a Q as the second letter of the file type,
  439.       as in FILENAME.TQP) should be unsqueezed using a PD program like USQ or
  440.       NSWEEP.
  441.  
  442.       C language source files of type CQ or HQ may be left within the original
  443.       LBR distribution library until needed.  The CHECKS.DQC file should be
  444.       extracted, unsqueezed to make CHECKS.DOC, and printed for your use.  To
  445.       print the file, do not use a formatting print routine such as WordStar's
  446.       Print function.  CHECKS.DOC has already been formatted, so that page
  447.       numbers will be consistent with the Table of Contents.  It may be
  448.       conveniently printed using the CP/M PIP utility.  Place PIP.COM and
  449.       CHECKS.DOC in drive A.  At the A> prompt, type
  450.  
  451.            PIP LST:=CHECKS.DOC
  452.  
  453.       after first making sure that your printer is set for 66 lines per page
  454.       (11 inch page at 6 lines per inch) and 80 columns per line, loaded with
  455.       continuous fan-fold paper, and positioned with the print-head at top-of-
  456.       page.
  457.  
  458.       Once all necessary files have been extracted and unsqueezed, store the
  459.       original LBR distribution disk in a safe place as a backup.  That disk
  460.       should be used if you wish to make a copy for a friend.
  461.  
  462.       CHECKS.SCR File and CHECKSIN Program
  463.  
  464.       The Check Register Program utilizes the screen parameter file CHECKS.SCR
  465.       to identify cursor controls which are compatible with your video display
  466.       terminal or computer console.  CHECKS.SCR also contains a "help" display
  467.       as well as the initial copyright message.
  468.  
  469.       Installation                                           v.1.0, Page 6
  470.  
  471.  
  472.  
  473.  
  474.       An uninstalled copy of CHECKS.SCR is included in the distribution
  475.       package.  That file may be modified to add the necessary screen controls
  476.       by one of three methods:
  477.  
  478.        1.  Extract the screen controls from a copy of the WordStar file
  479.            WS.COM, which has already been installed for your computer console.
  480.  
  481.        2.  Select your terminal or one similar to yours from among the limited
  482.            number available within the CHECKSIN.DAT file.
  483.  
  484.        3.  Directly edit the CHECKS.SCR file using a text editor such as
  485.            WordStar or ED to describe your terminal's screen controls.
  486.  
  487.       The CHECKSIN program will automatically adapt the uninstalled CHECKS.SCR
  488.       file to work properly with your equipment by using either method 1 or
  489.       method 2.  If you have a copy of WS.COM which works with your computer
  490.       screen, method 1 is perhaps the easiest.  If you choose method 2, the
  491.       CHECKSIN program will display the list of terminals found in
  492.       CHECKSIN.DAT; since CHECKSIN.DAT is a standard ASCII file, it may be
  493.       reviewed using the CP/M TYPE command, also.  Instructions for performing
  494.       each of the three installation methods are provided in this section.
  495.  
  496.       To execute the CHECKSIN installation program, place CHECKSIN.COM,
  497.       CHECKSIN.DAT, and CHECKS.SCR on a single disk in drive A.  (If you plan
  498.       to use installation method 1 and have only one disk drive, it will also
  499.       be necessary to put a copy of WS.COM on the same disk.)  You should
  500.       leave about 2 KB free space on the disk.  Do not remove this disk until
  501.       the installation process is complete.  At the A> prompt, type
  502.  
  503.            CHECKSIN
  504.  
  505.       You will be asked to select one of the three installation methods.
  506.  
  507.       If you choose method 1, you will be prompted to insert an installed copy
  508.       of the WordStar file WS.COM into one of your disk drives; you should not
  509.       remove it until the CHECKSIN process is complete.  Although the WS.COM
  510.       file will only be read from and will not be altered in any way, it is
  511.       always best to have a backup copy available.  You will be asked to
  512.       identify which drive contains WS.COM; type the drive letter (A or B or
  513.       whatever), then press RETURN.
  514.  
  515.       If you select method 2, you must indicate which drive includes a copy of
  516.       the CHECKSIN.DAT file.  Assuming you have followed these directions, you
  517.       may respond by typing A, followed by RETURN.  As with WS.COM above,
  518.       CHECKSIN.DAT will not be altered, but it is best to use a backup copy.
  519.  
  520.       When requested to identify which drive contains an uninstalled copy of
  521.       the screen parameter file CHECKS.SCR, you may type A and RETURN, as
  522.       indicated above.  This file will be modified, but a backup of the
  523.       original will be created on the same disk and named CHECKS.BAK.  Your
  524.       disk must have enough free space to store this backup file (about 2 KB).
  525.  
  526.       Whether or not CHECKSIN is used to adapt CHECKS.SCR to your console
  527.       screen, you may wish to customize the installation by directly editing
  528.  
  529.       Installation                                           v.1.0, Page 7
  530.  
  531.  
  532.  
  533.       this standard ASCII file using ED, WordStar, or some other text editor.
  534.       When using WordStar, it is MANDATORY to edit CHECKS.SCR as a Non-
  535.       document mode file (select N from the main menu).
  536.  
  537.       The CHECKS.SCR file consists of three sections:
  538.  
  539.        1.  The first six lines contain a "help" screen, which is shown
  540.            whenever the ^J command (CONTROL and J simultaneously) is given
  541.            within the Check Register Program.  This section should not be
  542.            edited.
  543.  
  544.        2.  The next eleven lines identify screen controls, which are detailed
  545.            below.  This section may be customized using your text editor.
  546.  
  547.        3.  The last section contains a coded copyright message, which is
  548.            displayed whenever the Check Register Program is started.  The
  549.            coded message is preceded by a single blank line.  After seeing the
  550.            copyright message a number of times, you may wish to eliminate it,
  551.            thus speeding the startup process.  This is possible by deleting
  552.            the blank line and everything following it.  If using WordStar,
  553.            position the cursor on the blank line preceding the coded message
  554.            and press ^Y (CONTROL and Y simultaneously) until all following
  555.            text is deleted.
  556.  
  557.       The second section contains eleven lines identifying screen controls
  558.       required by the Check Register Program.  An example is given in Figure
  559.       1 below.
  560.  
  561.                      2 27 61     Clead1  ESC =
  562.                      0           Clead2  Not Applicable
  563.                      0           Ctrail  Not Applicable
  564.                      0 32 32 0   Cb4flg Linoff Coloff Ascur
  565.                      2 27 84     Eraeol  ESC T
  566.                      2 27 82     Lindel  ESC R
  567.                      2 27 69     Linins  ESC E
  568.                      2 27 41     Ivon    ESC )
  569.                      2 27 40     Ivoff   ESC (
  570.                      1 26        Trmini  CTRL-Z
  571.                      100 1       Dloop Inserton
  572.  
  573.                   Figure 1:  Example of Section 2 of CHECKS.SCR
  574.  
  575.       Each line consists of decimal integers separated by one or more space or
  576.       tab character (called white space).  There may be white space before the
  577.       first integer on a line; anything may follow white space after the last
  578.       integer on a line.  Except for the fourth and eleventh lines, the format
  579.       of each line consists of a count of the number of values contained in
  580.       the screen control string, then the decimal equivalents of the string of
  581.       ASCII characters which define each screen control; a count of zero
  582.       indicates that the string is not applicable.  Screen controls identified
  583.       on each of the eleven lines are defined by line number below.
  584.  
  585.       The first four lines describe how to position the cursor at a specific
  586.       (row,column) coordinate on the screen, where (0,0) represents the upper-
  587.  
  588.       Installation                                           v.1.0, Page 8
  589.  
  590.  
  591.  
  592.       left corner.  The cursor positioning control sequence must obey the
  593.       following model (spaces are for presentation only):
  594.  
  595.            Clead1 P1 Clead2 P2 Ctrail
  596.  
  597.       When Cb4flg is zero, P1 = row + Linoff and P2 = column + Coloff.  When
  598.       Cb4flg is non-zero, P1 and P2 are reversed.  All parameters are detailed
  599.       below.
  600.  
  601.        1.  Count     From 1 thru 8, or 0 if not applicable
  602.            Clead1    Cursor positioning string preceding row and column
  603.  
  604.        2.  Count     From 1 thru 4, or 0 if not applicable
  605.            Clead2    Cursor positioning string between row and column
  606.  
  607.        3.  Count     From 1 thru 4, or 0 if not applicable
  608.            Ctrail    Cursor positioning string following row and column
  609.  
  610.        4.  Cb4flg    Zero if row precedes column in cursor positioning
  611.                      sequence; else, non-zero
  612.            Linoff    Cursor positioning value recognized as top row
  613.            Coloff    Cursor positioning value recognized as left column
  614.            Ascur     Zero if cursor positioning P1 and P2 are to be expressed
  615.                      as binary values, 2 if expressed as two ASCII digits, or
  616.                      3 if expressed as three ASCII digits
  617.  
  618.        5.  Count     From 1 thru 6, or 0 if not applicable
  619.            Eraeol    Control string to erase from cursor to end of line
  620.  
  621.        6.  Count     From 1 thru 6, or 0 if not applicable, or -1 to indicate
  622.                      VT100 compatible horizontal scroll region specified by
  623.                      ESC [ Pt r
  624.            Lindel    Control string to delete line containing cursor and move
  625.                      all lower lines up one line each, making last line blank;
  626.                      not used if Count = -1
  627.  
  628.        7.  Count     From 1 thru 8, or 0 if not applicable, or -1 to indicate
  629.                      VT100 compatible horizontal scroll region specified by
  630.                      ESC [ Pt r
  631.            Linins    Control string to insert a blank line and move line
  632.                      containing cursor and all lower lines down one line each,
  633.                      pushing last line off screen; not used if Count = -1
  634.  
  635.        8.  Count     From 1 thru 6, or 0 if not applicable
  636.            Ivon      Control string to activate highlighting (dim prefered;
  637.                      else, inverse, underline, or other)
  638.  
  639.        9.  Count     From 1 thru 6, or 0 if not applicable
  640.            Ivoff     Control string to deactivate highlighting (return to
  641.                      normal)
  642.  
  643.       10.  Count     From 1 thru 8, or 0 if not applicable
  644.            Trmini    Control string to clear the screen; it may be necessary
  645.                      to include the home cursor control string first
  646.  
  647.       Installation                                           v.1.0, Page 9
  648.  
  649.  
  650.  
  651.       11.  Dloop     Approximate speed of your CPU relative to 4 MHz Z80,
  652.                      expressed as percent; 200 indicates your CPU is twice as
  653.                      fast; reducing Dloop reduces the number of loops required
  654.                      for a given delay time, indicating that your CPU is
  655.                      slower or that you wish shorter delay
  656.            Inserton  Zero to startup in overtype (replace) mode when editing
  657.                      Payee field; non-zero to startup in insert mode
  658.  
  659.       By carefully following instructions described in this section, you
  660.       should be able to properly initialize CHECKS.SCR to describe screen
  661.       controls compatible with your computer console.
  662.  
  663.  
  664.  
  665.                              DEMONSTRATION and TUTORIAL
  666.  
  667.       The distribution library contains data files which may be used with the
  668.       Check Register Program for demonstration and tutorial purposes.  After
  669.       CHECKS.SCR has been properly initialized, place that file along with
  670.       CHECKS.COM, CLEARS.COM (optional), DEMO.DAT, and DEMO.INF on a disk in
  671.       drive A.  Be sure to retain a copy of DEMO.DAT, since that file will be
  672.       modified during the following exercises.
  673.  
  674.       CHECKS Program
  675.  
  676.       The CHECKS program may be used to manage the check register database.
  677.       To start it, type
  678.  
  679.            CHECKS DEMO
  680.  
  681.       at the A> prompt.  Once the program reads cursor controls from the
  682.       CHECKS.SCR file and clears the screen, a copyright notice should appear.
  683.       Press any key except ^C (CONTROL and C simultaneously, which causes the
  684.       program to stop).
  685.  
  686.       Check register entries will be read from the DEMO.DAT database and
  687.       displayed on your console screen.  The default title line, which
  688.       identifies the CHECKS version number, will appear centered at the top.
  689.       To the right of that will be the current filename, including disk drive.
  690.       If your console supports it, the top line should appear highlighted (dim
  691.       or inverse).  After one blank line, a prompt line will be seen; all
  692.       program prompts will appear on that line.  After another blank line, a
  693.       header (highlighted) displays field names applicable to all records
  694.       (entries); these are Date (with subfields month, date, and year
  695.       displayed as MM/DD/YY), Payee, Category, Amount, Deposit, Clear, and
  696.       Balance (a calculated field).  If anything looks wrong, verify that your
  697.       CHECKS.SCR file was properly initialized as described in the
  698.       Installation section.
  699.  
  700.       Current Date and Yes/No Queries
  701.  
  702.       You will be prompted to enter the current date.  This is requested
  703.       because the DEMO.INF file contains information defining automatic
  704.       transactions.  In order to determine if an automatic entry should be
  705.       generated, it is necessary to compare the current date against the most
  706.  
  707.       Demonstration and Tutorial                             v.1.0, Page 10
  708.  
  709.  
  710.  
  711.       recent date found in the database.  For demonstration purposes, make the
  712.       current month one greater than the most recent month, which is the
  713.       default (e.g., if the default month is 6, simply press 7 and RETURN to
  714.       change it).  Then press RETURN twice to skip past date and year
  715.       subfields.  You will be asked if you wish to change the current date and
  716.       prompted for a Y/N (Yes/No) response.
  717.  
  718.       Queries which may be answered Yes or No normally show a default
  719.       response.  If you simply press RETURN (or any other control command),
  720.       the default response will be assumed.  Pressing ESCAPE will toggle the
  721.       default reponse, but you will still have to press RETURN if you wish to
  722.       accept the new default.  Press Y or N (without RETURN) to respond Yes or
  723.       No regardless of the indicated default.
  724.  
  725.       There is a shortcut way to specify the current date.  After making the
  726.       minimum number of changes to convert the default date into the current
  727.       date (e.g., after changing the month), simply press ESCAPE.  This will
  728.       cause the new date to be accepted immediately.  Notice that no changes
  729.       will be necessary if the default date is satisfactory; ESCAPE will be
  730.       sufficient.
  731.  
  732.       Assuming you have made the current month one greater than the most
  733.       recent previous month, tell the program that you do not wish to change
  734.       it.  You should then see several automatic transactions entered near the
  735.       bottom of the screen.  You will be asked if you wish to accept each.
  736.  
  737.       After appropriate automatic transactions have been completed,
  738.       abreviation information will be read from DEMO.INF and installed into
  739.       memory.  Finally, the personalized title line found in DEMO.INF will be
  740.       read and displayed on the top line.  At this point, you will be prompted
  741.       to either start a new entry or press ^J for help.  Take a look at the
  742.       "help" screen by pressing ^J (CONTROL and J simultaneously).
  743.  
  744.       Throughout the balance of this document, a carat symbol (^) indicates
  745.       use of the CONTROL key in conjunction with another key, which is similar
  746.       to the use of SHIFT to type an upper case letter.
  747.  
  748.       Cursor Movement
  749.  
  750.       Now roam around the check register.  Move the cursor using ^D, ^S, ^E,
  751.       and ^X, which form a diamond pattern on the keyboard.  Notice that the
  752.       cursor jumps left and right by field except within the Payee field,
  753.       where it moves one character at a time.  Try ^F and ^A, which jump from
  754.       word to word within the Payee field but work like ^D and ^S outside of
  755.       Payee.  Within Payee, ^F and ^A always stop at the first non-space
  756.       character following one or more spaces, or at the start or end of text,
  757.       without regard to punctuation.  Notice that TAB and ^I do the same thing
  758.       as ^F; also, BACKSPACE and ^H work like ^S.  Scroll up and down one
  759.       "page" at a time with ^R and ^C, or one line at a time with ^W and ^Z.
  760.       Use ^QW and ^QZ for continuous scrolling, or ^QR and ^QC for a quick
  761.       jump to the extremities.  Find screen edges with ^QD, ^QS, ^QE, and ^QX.
  762.  
  763.       Notice that ^Q appears at the top left whenever you have entered only
  764.       the first half of a quick cursor movement command; this command display
  765.       changes to show the cursor line number after completing the command.
  766.  
  767.       Demonstration and Tutorial                             v.1.0, Page 11
  768.  
  769.  
  770.  
  771.       Also notice that the second half of a two key command may be entered by
  772.       pressing either the lower case, upper case, or CONTROLed form; for
  773.       example, ^Qc, ^QC, and ^Q^C all move to the bottom of the check
  774.       register.
  775.  
  776.       Save, Quit, and Done Commands
  777.  
  778.       You may wish to interrupt the demonstration and return to it at a later
  779.       time.  To record all changes made to the check register without quitting
  780.       the program, use the ^KS command.  This will save a complete copy of the
  781.       current register after first making a backup copy of the original
  782.       register.  The filename specified on the command line when the program
  783.       was initiated, which also appears at the right edge of the top display
  784.       line, will be used for each file.  For the demonstration, the filename
  785.       is DEMO.  Therefore, the original database file DEMO.DAT will be renamed
  786.       DEMO.BAK, and the current check register will be saved as DEMO.DAT.  All
  787.       entries including any cleared entries (see Clear Field later in this
  788.       section) will be saved.
  789.  
  790.       There are two ways to stop the program.  ^KQ will quit without saving
  791.       any revisions you may have made to the check register.  If there have
  792.       not been any changes since you first started the program or since the
  793.       last time you saved the register using ^KS, then the program will quit
  794.       immediately.  If the register was modified, you will be queried to
  795.       verify that you wish to abandon the current register without first
  796.       saving it.  You may respond Yes or No (see Yes/No Queries earlier in
  797.       this section).  If the response is Yes, then the program will quit; if
  798.       No, it will resume.
  799.  
  800.       The other way to exit the program is by use of the Done command ^KD (or
  801.       ^KX, which is a synonym for ^KD).  In this case, any cleared entries
  802.       (marked CLR in the Clear field) will first be appended to the CLR file
  803.       (DEMO.CLR for the demonstration), the DAT file will be renamed BAK
  804.       (DEMO.BAK), and all active entries (those which have not cleared the
  805.       bank) will be saved in a new DAT file (DEMO.DAT).  Notice that if there
  806.       are any cleared entries, ^KD is not the same as ^KS followed by ^KQ,
  807.       since ^KS saves all entries, both cleared and active.  The Done command
  808.       is described in more detail later in this section.
  809.  
  810.       New Entry and Date Field
  811.  
  812.       When at the end of the check register, you may start a new entry by
  813.       pressing RETURN.  The first time a new entry is initiated, the Date
  814.       field will default to whatever you entered for current date during
  815.       program startup.  After that, the preceding entry's date will be used as
  816.       the default.  You may change the date by entering a new value when the
  817.       cursor is in an appropriate subfield; only two digits are permitted.
  818.       RETURN or any other control command (except ^G, DEL, or ^U, which are
  819.       discussed below) will cause whatever appears on the display to be
  820.       accepted as the value for the subfield.  For the Date field only, the
  821.       slash character (/) will produce the same result as RETURN, and the
  822.       cursor will advance.  The value is not checked to be sure that a valid
  823.       date has been entered, allowing flexibility in your definition of dates;
  824.       however, the automatic transaction processor and the sorting routine
  825.  
  826.       Demonstration and Tutorial                             v.1.0, Page 12
  827.  
  828.  
  829.  
  830.       assume that dates are calendar values displayed as MM/DD/YY
  831.       (month/day/year).
  832.  
  833.       Notice that the prompt line changes each time the cursor enters a new
  834.       field or subfield.  Also, pressing RETURN always causes the cursor to
  835.       advance to the next field or subfield.  Date subfields may be edited by
  836.       pressing ^G or DEL; further information on editing numeric values is
  837.       postponed until description of the Amount field.  When you are satisfied
  838.       with the date for your new entry, move to the Payee field.
  839.  
  840.       Payee Field and Abreviations
  841.  
  842.       Before entering text into the Payee field, check which abreviations are
  843.       available by using the ^KA command.  Abreviations defined in DEMO.INF
  844.       and installed during startup will be shown in alphabetical order.  If
  845.       there are too many to display on one screen, scroll up or down with ^W
  846.       or ^Z.  Press ESCAPE to restore the check register display.
  847.  
  848.       Pick one of the abreviations to define the payee for your new entry.
  849.       Type the three character abreviation using either upper or lower case
  850.       (or both), then pause briefly.  The abreviation will be automatically
  851.       expanded, leaving the cursor at the end where additional text may be
  852.       inserted.
  853.  
  854.       The program checks for an abreviation whenever only three characters
  855.       have been entered for the payee, regardless of case, but only if there
  856.       has been a brief delay after the third character was typed.  Therefore,
  857.       the same three characters may be used to enter a complete payee
  858.       description without abreviation expansion, if typed continuously at
  859.       normal speed.  The necessary delay will be shorter (longer) if the value
  860.       of Dloop found in CHECKS.SCR is reduced (increased) as described in the
  861.       Installation section.  The normal delay is one-half second.
  862.  
  863.       Characters may be inserted into the middle of a payee description by
  864.       moving the cursor to the appropriate position, then typing additional
  865.       text.  If INSERT mode is ON, then previous text will be pushed to the
  866.       right to make room for the new characters; if INSERT mode is OFF, new
  867.       characters will overtype (replace) previous ones.  Whenever the cursor
  868.       is within the Payee field, the current mode will be displayed on the
  869.       prompt line.  Pressing ^V will toggle between INSERT ON and INSERT OFF.
  870.       As described in the Installation section, the value of Inserton in
  871.       CHECKS.SCR defines the initial mode.
  872.  
  873.       The Payee field may be edited using ^G (delete cursor character), DEL
  874.       (delete previous character), ^T (delete balance of word), ^QY (delete
  875.       from cursor to end of field), and ^QDEL (delete to beginning of field
  876.       except cursor).  Each deletion may be restored (undeleted) by pressing
  877.       ^U before additional editing (insert or delete) has been performed.
  878.       Notice that after the cursor has been moved out of the Payee field, ^U
  879.       will still be effective once the cursor is returned anywhere within the
  880.       Payee field; the entire contents of Payee are restored whenever ^U is
  881.       used.  The editing commands ^T, ^QY, and ^QDEL are meaningful only
  882.       within the Payee field and have no effect outside of that field.
  883.  
  884.       Demonstration and Tutorial                             v.1.0, Page 13
  885.  
  886.  
  887.  
  888.       DEL has been used in the previous paragraph to signify the DELETE key.
  889.       The combination represented by ^_ (CONTROL and UNDERLINE simultaneously)
  890.       is always a synonym for DEL, so ^Q^_ will function the same as ^QDEL.
  891.       When reading this document, DEL should be understood to indicate either
  892.       the DELETE key or the ^_ combination.
  893.  
  894.       Notice that a check for abreviation expansion will not occur when the
  895.       payee description has been edited until only three characters are left.
  896.       Instead, the check is performed only after the third character is typed.
  897.       Therefore, to insure that a valid abreviation will be expanded, it is
  898.       necessary to edit until only two characters are left, then type one
  899.       more.
  900.  
  901.       Category Field
  902.  
  903.       When contents of the Payee field are satisfactory, press RETURN or an
  904.       appropriate control command to move to the Category field.  The default
  905.       category is blank or SPACE.  You may enter any single character which
  906.       will display on the screen, such as a letter, digit, or punctuation
  907.       mark.  Letters will always be converted to upper case.  Therefore, the
  908.       most useful categories are represented by 26 letters and 10 digits.  For
  909.       example, you might use H for household expenses, U for utilities, etc.
  910.       Or if keeping two separate check registers with one account, you might
  911.       let 1 represent the first register and 2 the second.  It is often
  912.       satisfactory to accept the default and leave the category blank.
  913.  
  914.       The effect of pressing ^G or DEL while in the Category field is to
  915.       delete the existing character and leave a blank, which is the same
  916.       result as pressing SPACE.  The undo command ^U has no effect upon
  917.       category (although it may restore an entry which was previously deleted
  918.       using ^Y).
  919.  
  920.       Amount Field and Calculator
  921.  
  922.       Next move to the Amount field and enter a value for your new entry.  The
  923.       default amount for new entries is zero.  When another value is started,
  924.       it will replace any previous value.  Amounts are always positive, so a
  925.       plus or minus sign is not required.  If plus or minus is pressed, it
  926.       will be assumed the start of a calculation, which is described below.
  927.       Amounts should be entered using digits and decimal (or period); a
  928.       numeric keypad is particularly useful.  RETURN or any other control
  929.       command except ^G, DEL, or ^U, completes the value.
  930.  
  931.       It is not always necessary to enter a decimal followed by two digits.
  932.       If a value is completed before or immediately after pressing decimal,
  933.       then the value is assumed to be whole dollars; it will be displayed with
  934.       zeroes following the decimal.  If the value is completed after entering
  935.       a decimal and one digit, then the digit is assumed to be tens of cents
  936.       and zero is shown in the units place.  No more than two digits are
  937.       permitted after typing a decimal.  For example, typing
  938.  
  939.            123 RETURN        results in     123.00
  940.            123. RETURN       results in     123.00
  941.            123.4 RETURN      results in     123.40
  942.            123.45 RETURN     results in     123.45
  943.  
  944.       Demonstration and Tutorial                             v.1.0, Page 14
  945.  
  946.  
  947.  
  948.  
  949.       Numeric fields (Date and Amount) may be edited by pressing ^G or DEL.
  950.       The effect of either is to delete digits from the right, so that new
  951.       low-order digits may be substituted.  If ^U is pressed before completing
  952.       a new value, an edited numeric field will be restored to its original
  953.       value; this is true even if the only editing has been substitution of
  954.       another value, rather than use of ^G or DEL.
  955.  
  956.       Another way to complete a new value is to enter a calculator command.
  957.       The calculator may be used to add to or subtract from the Amount field.
  958.       Also, the current amount may be added to or subtracted from calculator
  959.       Memory, which is displayed on the prompt line whenever the cursor is in
  960.       the Amount field.  Finally, Memory may be cleared, or it may be recalled
  961.       to the Amount field.  Note that calculator Memory will be saved with
  962.       check register entries, so that it will be available the next time the
  963.       program is executed.
  964.  
  965.       The available calculator commands are listed below:
  966.  
  967.            +    Add Value to Amount
  968.            -    Subtract Value from Amount
  969.            =    Display Result as Amount
  970.            m+   Add Amount to Memory
  971.            m-   Subtract Amount from Memory
  972.            mc   Clear Memory to Zero
  973.            mr   Recall from Memory to Amount
  974.  
  975.       To add to (or subtract from) the current amount, press + (or -) followed
  976.       by the value to be added (or subtracted).  Press = to complete the
  977.       addend (or subtrahend) and display the result.  Any other calculator or
  978.       control command except ^G, DEL, or ^U will also complete the result.
  979.  
  980.       Adding and/or subtracting several values may be done in series.  For
  981.       example, if the Amount field contains 1.23, then entering
  982.  
  983.            + 4.56 - 7.89 + 10.11 =
  984.  
  985.       will result in 8.01 for Amount.  Notice that aftering entering 7.89 +,
  986.       the Deposit field changes to show that the sign of Amount has changed;
  987.       this will be discussed in more detail below.
  988.  
  989.       When using the + or - command, the value entered after the command may
  990.       be used as a constant in a series calculation.  Before making use of
  991.       this constant feature, it is best to press = to make sure the current
  992.       value is complete.  For example, if Amount is 12.00, then entering
  993.  
  994.            = + 6 + + + =
  995.  
  996.       results in 36.00 for Amount, which is 12.00 + ( 6.00 x 4 ).  Or when
  997.       Amount is 36.00, then
  998.  
  999.            = - 5 - - - =
  1000.  
  1001.       yields 16.00, as in 36.00 - ( 5.00 x 4 ).  Finally, with Amount at
  1002.       16.00, then
  1003.  
  1004.       Demonstration and Tutorial                             v.1.0, Page 15
  1005.  
  1006.  
  1007.  
  1008.  
  1009.            = + 4 - + - =
  1010.  
  1011.       produces no change in Amount.  If there is no value entered after the
  1012.       first + or - command, then the original value of Amount will be used as
  1013.       the constant.  For example, if Amount is 16.00, then entering
  1014.  
  1015.            = + + + =
  1016.  
  1017.       yields 16.00 + 16.00 + 16.00 + 16.00 = 4 x 16.00 = 64.00.
  1018.  
  1019.       Calculator Memory may be used in calculations.  Assuming that Amount is
  1020.       64.00 and Memory is 12.34, typing
  1021.  
  1022.            + mr - 9.87 mc m- + 3.45 m+ - 1.23 =
  1023.  
  1024.       produces 69.92 for Amount and 2.22 for Memory.  Notice that m commands
  1025.       may be entered using upper or lower case, but are always displayed in
  1026.       lower case.
  1027.  
  1028.       Deposit Field
  1029.  
  1030.       As previously mentioned, amounts are always positive.  When the cursor
  1031.       is within the Deposit field, a query on the prompt line asks whether the
  1032.       amount represents a deposit.  The response may be Yes or No; the default
  1033.       response will be equal to the current value of the Deposit field, which
  1034.       will be No for a new entry.  A Yes response will cause DEP to display in
  1035.       the Deposit field, indicating that the amount is a deposit.  If the
  1036.       amount is a withdrawal, then the response should be No, and the Deposit
  1037.       field will be blank.
  1038.  
  1039.       As described near the beginning of this section, the default response
  1040.       for a Yes/No query will be toggled each time ESCAPE is pressed.  To
  1041.       accept the default, press RETURN or any other control command.  Press Y
  1042.       or N (without RETURN) to respond Yes or No regardless of the indicated
  1043.       default.  Editing commands including ^G and DEL have no effect within
  1044.       the Deposit field.  Similarly, ^U will not restore the previous value of
  1045.       Deposit (although it may restore an entry which was previously deleted
  1046.       using ^Y).
  1047.  
  1048.       If the amount becomes negative as a result of calculator commands, then
  1049.       the Deposit field will automatically be reversed to restore the amount
  1050.       to a positive value.  For example, if Amount is 12.34 and Deposit is
  1051.       blank (No), then entering
  1052.  
  1053.            - 23.45 =
  1054.  
  1055.       will cause Amount to become 11.11 and DEP (Yes) to display in the
  1056.       Deposit field.
  1057.  
  1058.       Clear Field
  1059.  
  1060.       When a transaction is recorded by the bank, it should be marked by
  1061.       positioning the cursor in the Clear field and responding Yes to the
  1062.       query.  This will cause CLR to display in the Clear field, signifying
  1063.  
  1064.       Demonstration and Tutorial                             v.1.0, Page 16
  1065.  
  1066.  
  1067.  
  1068.       that the check has cleared the bank.  The default for a new entry will
  1069.       be No, which is indicated by a blank Clear field.
  1070.  
  1071.       As described for the Deposit field, the default response will be toggled
  1072.       between Yes and No each time ESCAPE is pressed.  Press RETURN or any
  1073.       other control command to accept the default.  Press the single character
  1074.       Y or N to respond Yes or No directly.  Editing commands including ^G and
  1075.       DEL have no effect, and ^U will not restore the previous value.
  1076.  
  1077.       Balance Field
  1078.  
  1079.       Notice that it is not possible to position the cursor within the Balance
  1080.       field; therefore, this field may not be directly altered.  Instead, the
  1081.       cumulative balance is automatically calculated and updated whenever
  1082.       necessary.
  1083.  
  1084.       The balance will display within parentheses whenever it is negative
  1085.       (i.e., overdrawn or deficit).  In this unfortunate case, it will display
  1086.       with two digits following a decimal over the range (   0.01) thru
  1087.       (9999.99); beyond that, cents will be rounded off to display (  10000)
  1088.       thru (3276899).  A positive balance will display from 0.00 thru
  1089.       99999.99, then round off cents to show 100000 thru 3276799, which would
  1090.       be a clear indication of affluence.
  1091.  
  1092.       Insert/Delete Entry and Undo Commands
  1093.  
  1094.       As we have discussed, it is possible to start a new entry by pressing
  1095.       RETURN whenever the cursor is at the end of the check register.  To
  1096.       insert a new entry in the middle of the check register, position the
  1097.       cursor on the line where the entry is desired (any field will do), and
  1098.       press ^N.  The previous entry on that line will move down to make room.
  1099.  
  1100.       It should be noted that the program will permit up to 128 active
  1101.       entries.  If this limit would be exceeded, you will not be permitted to
  1102.       create a new entry.  Normally, cleared entries are transferred from the
  1103.       active database file to a separate file, freeing space for new entries.
  1104.  
  1105.       To delete an entry, place the cursor within any field and press ^Y.
  1106.       After an entry has been deleted, it may be restored by positioning the
  1107.       cursor on any line of the check register and within any field, then
  1108.       pressing the Undo command ^U.  This feature may be used to move an entry
  1109.       from one line to another by first deleting it, then restoring it at the
  1110.       new location.  It is also possible to make several copies of an entry by
  1111.       first deleting it, then pressing ^U repeatedly.
  1112.  
  1113.       Each time ^U is pressed, the entry last deleted by ^Y will be restored
  1114.       at whichever line the cursor is positioned.  If a character insert or
  1115.       delete (such as ^G) has intervened since the last ^Y, then the affected
  1116.       Payee field or numeric value may be restored by the first ^U command,
  1117.       but the deleted entry will be restored by the second ^U.
  1118.  
  1119.       Ordering Entries
  1120.  
  1121.       Check register entries may be conveniently ordered (sorted) according to
  1122.       several criteria.  Press ^KO to order all entries.  You will be prompted
  1123.  
  1124.       Demonstration and Tutorial                             v.1.0, Page 17
  1125.  
  1126.  
  1127.  
  1128.       to select the primary field, which implies a specific secondary field as
  1129.       follows:
  1130.  
  1131.            Primary Field            Secondary Field
  1132.  
  1133.               Date                       Payee
  1134.               Payee                      Date
  1135.               Category                   Date
  1136.               Amount                     Date
  1137.  
  1138.       All entries will be ordered by ascending value of the primary field.
  1139.       Entries having the same primary field contents are ordered according to
  1140.       their secondary field.  The Payee field will be sorted by ascending
  1141.       ASCII value, which means that upper case letters will come before lower
  1142.       case.  Category will be sorted by ASCII value, also, but lower case
  1143.       letters are not allowed in the Category field.
  1144.  
  1145.       It is possible to order a subset of the entire check register.  Position
  1146.       the cursor anywhere within the first entry of the subset and press ^O
  1147.       (or ^B, which is a synonym for ^O).  As for the ^KO command, you will be
  1148.       prompted to choose the primary field; however, only the remainder of the
  1149.       register will be sorted.  That is, all entries above the current entry
  1150.       will be disregarded when ordering is commanded with ^O (or ^B).
  1151.  
  1152.       For example, suppose you wish to sort entries since January 1st (or any
  1153.       other date) by category.  First order all entries chronologically by
  1154.       using ^KO and identifying Date as the primary field.  Then position the
  1155.       cursor at the entry with the earliest date of interest and press ^O to
  1156.       order remaining entries by the Category field.
  1157.  
  1158.       Check Number
  1159.  
  1160.       You may have noticed the absence of any field to identify the number
  1161.       which is usually printed on a check by the bank.  The reason for this is
  1162.       personal; I have never found any particular value in trying to keep
  1163.       track of a check's number.  Therefore, I preferred to make the Payee
  1164.       field as long as possible, rather than reserve space for a number field.
  1165.  
  1166.       For those who must record the number, the easiest way may be to add it
  1167.       at the end of the Payee field.  Unfortunately, there will not be any
  1168.       convenient way to sort by number if this method is used.  Alternatively,
  1169.       you may add the number at the start of the Payee field, so that ASCII
  1170.       ordering by payee will provide some kind of sequence.  If you wish to
  1171.       use the latter approach, it is suggested that you first type the payee's
  1172.       description, taking advantage of the abreviation feature, then return to
  1173.       the start of the Payee field to insert the check number, using INSERT ON
  1174.       mode.
  1175.  
  1176.       Print Command
  1177.  
  1178.       The entire check register may be printed by using the ^KP command (or
  1179.       ^P, which is a synonym for ^KP) regardless of the cursor location.  You
  1180.       will be prompted to prepare the printer, then press RETURN when ready.
  1181.       The paper should be positioned at the top of a clean page and the
  1182.       printer should be on line before pressing RETURN.  The prompt line will
  1183.  
  1184.       Demonstration and Tutorial                             v.1.0, Page 18
  1185.  
  1186.  
  1187.  
  1188.       display an appropriate message while printing continues.  When complete,
  1189.       a form feed will cause the paper to roll to a new page.
  1190.  
  1191.       Reconciliation
  1192.  
  1193.       In most cases, the bank sends a statement each month indicating which
  1194.       deposits and withdrawals have been recorded for your account.  At that
  1195.       time, it is convenient to reconcile your check register against the bank
  1196.       statement.  Each transaction recorded by the bank should be marked CLR
  1197.       in your register's Clear field.  A convenient way to reconcile is to
  1198.       first order all entries by amount using the ^KO command.  Then each
  1199.       statement transaction may be easily located in the register by scanning
  1200.       for the correct amount.  Moving the cursor up and down in the Clear
  1201.       field (with ^E and ^X) permits appropriate entries to be directly marked
  1202.       (with ESCAPE or Y) when found.  If the statement indicates bank fees
  1203.       have been withdrawn, you should create a debit entry and mark it CLR.
  1204.       Similarly, any interest paid by the bank should be noted as a deposit
  1205.       and cleared.  For demonstration purposes, you should mark about a dozen
  1206.       entries CLR.
  1207.  
  1208.       A special reconciliation display is produced by use of the ^KR command.
  1209.       This report itemizes beginning balance, checks (debits), deposits
  1210.       (credits), and current balance summed for each category, including a
  1211.       total over all categories.  Checks, deposits, and current balance are
  1212.       listed for cleared entries first, then for all entries (cleared plus
  1213.       uncleared).  For each category and for the bottom line, date of the most
  1214.       recent entry will be displayed.  If the report is too long to fit on the
  1215.       screen, it may be scrolled up or down using ^Z or ^W.  The ^P command
  1216.       will cause the report to be printed.  To return to the complete check
  1217.       register, press ESCAPE.
  1218.  
  1219.       By comparing checks, deposits, and current balance totaled over all
  1220.       cleared entries relative to the bank statement, correct reconciliation
  1221.       may be confirmed.
  1222.  
  1223.       Done Command
  1224.  
  1225.       As described earlier in this section, the Done command ^KD (or ^KX,
  1226.       which is a synonym for ^KD) is the most convient way to save the current
  1227.       check register and exit the program.  Any cleared entries (marked CLR in
  1228.       the Clear field) will first be appended to the CLR file (DEMO.CLR for
  1229.       the demonstration), the DAT file will be renamed BAK (DEMO.BAK), and all
  1230.       active entries (those which have not cleared the bank) will be saved in
  1231.       a new DAT file (DEMO.DAT).
  1232.  
  1233.       The CLR file is able to hold up to 384 cleared entries, which are stored
  1234.       chronologically.  In order to maintain the proper order, the check
  1235.       register will be sorted by date before transferring cleared entries to
  1236.       the CLR file.  If the number of new cleared entries to be appended will
  1237.       cause the CLR file to exceed its limit, you will first be asked to
  1238.       authorize eliminating enough of the oldest entries from the CLR file to
  1239.       avoid the problem.  If you answer No, you may use ^KS to save all
  1240.       current entries including cleared entries, followed by ^KQ to quit the
  1241.       CHECKS program, then use the CLEARS program (described later in this
  1242.       section) to review, edit, summarize, and delete CLR file entries.  If
  1243.  
  1244.       Demonstration and Tutorial                             v.1.0, Page 19
  1245.  
  1246.  
  1247.  
  1248.       you answer Yes, then the oldest entries will be automatically discarded.
  1249.       Notice that a backup of the previous CLR file is not made.
  1250.  
  1251.       Before separating them from the active check register, you will be
  1252.       prompted to print an audit trail of cleared entries for your permanent
  1253.       records.  You may respond Yes or No.
  1254.  
  1255.       The same disk drive accessed for the original register database file
  1256.       will be used to save the final files.  Before writing, all drives will
  1257.       automatically be reset; therefore, it will be possible to change the
  1258.       disk without causing an operating system error.  If there is a problem,
  1259.       such as insufficient space on the disk, then you will be prompted to
  1260.       replace the disk and try again; all data should be recovered.  For your
  1261.       information, the DAT file will require no more than 7 KB, and the CLR
  1262.       file, 20 KB maximum.
  1263.  
  1264.       Balance Brought Forward
  1265.  
  1266.       Entries which have been marked CLR are transferred from the active
  1267.       database DAT file to a separate CLR file when the ^KD command (or ^KX,
  1268.       as described earlier in this section) is used to save the register and
  1269.       stop the program.  Before a cleared entry is transferred, its amount
  1270.       will be added to a special BALANCE BROUGHT FORWARD entry, which is
  1271.       retained in the active database.  This insures that the cumulative
  1272.       balance based upon active entries will be accurate.  For a
  1273.       demonstration, you should use the Done command (^KD or ^KX), then
  1274.       restart the CHECKS program using the procedure indicated at the
  1275.       beginning of this section.
  1276.  
  1277.       A separate BALANCE BROUGHT FORWARD is determined for each unique
  1278.       category (see Category field); all cleared entries with the same
  1279.       category will be summarized by a single BALANCE BROUGHT FORWARD.  The
  1280.       date of the BALANCE BROUGHT FORWARD will be made equal to that of the
  1281.       most recent cleared entry added to the summary.  All BALANCE BROUGHT
  1282.       FORWARD entries will be sorted to the top of the check register in order
  1283.       of their date.
  1284.  
  1285.       Because of the special significance of a BALANCE BROUGHT FORWARD entry,
  1286.       it may not be directly modified.  Whenever the cursor is within such an
  1287.       entry, the prompt line will query whether its BALANCE BROUGHT FORWARD
  1288.       status should be canceled.  If the response is Yes, verification will be
  1289.       requested, since this action removes the entry's special protection.  If
  1290.       verified, the change will be denoted by converting all characters in the
  1291.       Payee field to lower case.  Once BALANCE BROUGHT FORWARD status is
  1292.       removed, the entry may be edited or deleted; however, this may have a
  1293.       significant impact upon the check register's cumulative balance, so it
  1294.       should be carefully considered.  If you simply wish to revise the
  1295.       entry's category, for example, then you may wish to mark it CLR, so that
  1296.       it will subsequently be summarized into another BALANCE BROUGHT FORWARD
  1297.       entry.
  1298.  
  1299.       CLEARS Program
  1300.  
  1301.       The CLEARS program may be used to manage cleared entries stored in the
  1302.       CLR file.  Make sure that CLEARS.COM, CHECKS.SCR, DEMO.INF, and DEMO.CLR
  1303.  
  1304.       Demonstration and Tutorial                             v.1.0, Page 20
  1305.  
  1306.  
  1307.  
  1308.       are in drive A.  At the A> prompt, type
  1309.  
  1310.            CLEARS DEMO
  1311.  
  1312.       Once the program reads cursor controls from the CHECKS.SCR file and
  1313.       clears the screen, a copyright notice should appear.  Press any key
  1314.       except ^C to continue.
  1315.  
  1316.       Cleared entries will be read from the DEMO.CLR file (created earlier
  1317.       during this demonstration) and displayed on your screen.  The default
  1318.       title line, which identifies the CLEARS version number, will appear
  1319.       centered at the top.  To the right of that will be the current filename,
  1320.       including disk drive.  A customized title will be read from the DEMO.INF
  1321.       file and displayed in place of the default title.  Other information in
  1322.       DEMO.INF, including abreviations and automatic transactions, will be
  1323.       ignored.
  1324.  
  1325.       As you will see, CLEARS operates in a manner which is very similar to
  1326.       the CHECKS program.  The Clear field is replaced by the <M>ark field.
  1327.       If an entry is <M>arked, it will be added into a SUMMARY BROUGHT FORWARD
  1328.       entry and deleted from the database of cleared entries (CLR file) when
  1329.       the Done command (^KD or ^KX) is executed.  The SUMMARY BROUGHT FORWARD
  1330.       is analogous to BALANCE BROUGHT FORWARD; all <M>arked entries with the
  1331.       same category will be added to a single SUMMARY BROUGHT FORWARD.  The
  1332.       Done command and the Save command (^KS) will replace the CLR file
  1333.       without altering the active database DAT file.
  1334.  
  1335.       The cursor will enter only the Category and <M>ark fields, since those
  1336.       are the only ones which may be changed.  The other fields cannot be
  1337.       modified, to preserve integrity of the original entries.  Changing
  1338.       category permits you to redefine which SUMMARY BROUGHT FORWARD will be
  1339.       used for a <M>arked entry.
  1340.  
  1341.       The ^KR command produces a report analogous to the reconciliation
  1342.       report, with beginning summary, checks, deposits, and current summary
  1343.       for <M>arked entries and for all cleared entries itemized by category,
  1344.       including a total over all categories.
  1345.  
  1346.       CHECKS commands which are not meaningful for the CLEARS program include
  1347.       ^V (insert mode), ^N (insert line), ^T (delete word), ^QY (delete to
  1348.       EOL), ^QDEL (delete to BOL), and ^KA (display abreviations).  Delete
  1349.       character commands ^G and DEL are applicable only while the cursor is
  1350.       within the Category field.  Other commands function as expected.  In
  1351.       particular, ^Y may be used to delete entries from the CLR database, ^U
  1352.       will restore the last entry deleted by ^Y, ^KO (and ^O) may be used to
  1353.       order entries, and ^KP (or ^P) will print them.
  1354.  
  1355.  
  1356.  
  1357.                                EXECUTING the PROGRAM
  1358.  
  1359.       The Check Register Program requires that CHECKS.SCR, which has been
  1360.       installed with your console's screen controls, reside in the default
  1361.       disk drive (indicated as part of the > prompt).  When the program is
  1362.       started, it will look for an information file of type INF (described in
  1363.  
  1364.       Executing the Program                                  v.1.0, Page 21
  1365.  
  1366.  
  1367.  
  1368.       a following section) and a database file of type DAT, which need not be
  1369.       on the same disk as the COM or SCR files.  When the program is stopped
  1370.       using ^KD (or ^KX), it will add any cleared entries to a file of type
  1371.       CLR, rename the original DAT file to be of type BAK, and write the
  1372.       current active register to a new DAT file.  The INF, DAT, CLR, and BAK
  1373.       files will all be on the same disk and will all have the same filename;
  1374.       the default filename is CHECKS, but you may choose another name.  In
  1375.       this way, you may manage more than one check register by giving each a
  1376.       different name.
  1377.  
  1378.       On the command line, you may indicate which check register to use.  For
  1379.       example, if you wish to work with a register named FAMILY located on a
  1380.       disk in drive B, place CHECKS.COM and CHECKS.SCR in drive A and at the
  1381.       A> prompt type
  1382.  
  1383.            CHECKS B:FAMILY
  1384.  
  1385.       The program will look for FAMILY.INF on drive B.  If it is not found,
  1386.       you will be given an opportunity to stop or proceed (the information
  1387.       file is optional).  Next the database file FAMILY.DAT will be located on
  1388.       drive B.  If it does not exist, which will be the case when you start a
  1389.       new register (described in a later section), you may again choose to
  1390.       quit or continue; in this case, the check register will be empty, and
  1391.       you may begin filling it with entries.  When you are done, enter the ^KD
  1392.       command.  The program will append any cleared entries to FAMILY.CLR on
  1393.       drive B or, if there were no previous CLR file, it will create one.
  1394.       Finally, FAMILY.DAT (if it existed) will be renamed FAMILY.BAK, and the
  1395.       active check register will be written to a new FAMILY.DAT file on the B
  1396.       drive.
  1397.  
  1398.       In general, the command line may be typed as
  1399.  
  1400.            u>v:CHECKS w:filename
  1401.  
  1402.       where u represents the default disk drive containing CHECKS.SCR, v
  1403.       indicates the drive where CHECKS.COM is located, and the register files
  1404.       may be found on drive w with the name "filename".  If v: is not
  1405.       specified, the COM and SCR files will be assumed on default drive u.
  1406.       Similarly, if w: is not included, register files will be read and
  1407.       written on the default drive.  Finally, if "filename" is blank, the
  1408.       default name CHECKS will be assumed.  Therefore,
  1409.  
  1410.            A>CHECKS
  1411.  
  1412.       will use CHECKS.COM, CHECKS.SCR, CHECKS.INF, CHECKS.DAT, CHECKS.BAK, and
  1413.       CHECKS.CLR all on drive A.  Also,
  1414.  
  1415.            A>CHECKS B:
  1416.  
  1417.       will look for CHECKS.COM and CHECKS.SCR on drive A, while CHECKS.INF,
  1418.       CHECKS.DAT, CHECKS.BAK, and CHECKS.CLR will each be on drive B.  Other
  1419.       valid commands include
  1420.  
  1421.       Executing the Program                                  v.1.0, Page 22
  1422.  
  1423.  
  1424.  
  1425.            A>B:CHECKS               with CHECKS.SCR in drive A
  1426.            A>CHECKS MYBOOK          with CHECKS.SCR in drive A
  1427.            B>A:CHECKS SPOUSE        with CHECKS.SCR in drive B
  1428.            B>CHECKS A:CHECKS        with CHECKS.SCR in drive B
  1429.            B>CHECKS A:              with CHECKS.SCR in drive B
  1430.  
  1431.       The CLEARS program is initiated in a similar manner.  CHECKS.SCR must be
  1432.       on the default disk.  CLEARS will read the filename.INF and filename.CLR
  1433.       files and write a new filename.CLR file; DAT and BAK files are not
  1434.       involved with the CLEARS program.  The general command line is
  1435.  
  1436.            u>v:CLEARS w:filename
  1437.  
  1438.       where the default "filename" is CHECKS.  Therefore, the procedure for
  1439.       running CLEARS is the same as that for CHECKS; simply substitute CLEARS
  1440.       in place of CHECKS.
  1441.  
  1442.  
  1443.  
  1444.                                   INFORMATION FILE
  1445.  
  1446.       The information file is a standard ASCII file which may be created using
  1447.       any text editor, such as ED or WordStar.  If WordStar is used, the file
  1448.       must be edited in Non-document mode (select N from the main menu).  You
  1449.       may give the file any name of type INF, such as FAMILY.INF.  The default
  1450.       name is CHECKS.INF.
  1451.  
  1452.       The INF file may contain three sets of information, which are automatic
  1453.       transactions, abreviation definitions, and customized title.  Each set
  1454.       is identified by a keyword.  Only the first five characters of each
  1455.       keyword are significant; they may be in upper or lower case.  The
  1456.       keywords are
  1457.  
  1458.            AUTOMatic transactions
  1459.            ABREViations
  1460.            TITLE
  1461.  
  1462.       Each keyword must begin in the first column of a line.  When the first
  1463.       five characters are determined to be a keyword, remaining characters on
  1464.       the same line are ignored.  Each line of text following a keyword will
  1465.       be interpreted as a definition of the type indicated by the keyword,
  1466.       until another keyword is recognized.  If the first lines of the file do
  1467.       not contain a keyword, they will be ignored.  No line may contain more
  1468.       than 148 characters.
  1469.  
  1470.       Each automatic transaction definition must appear on a separate line and
  1471.       must contain the following five fields:
  1472.  
  1473.            Date  Category  Amount  Deposit  Payee
  1474.  
  1475.       The fields must be separated by one or more space or tab (white space).
  1476.       Each of the first four fields may not contain any embedded white space.
  1477.       Examples are
  1478.  
  1479.       Information File                                       v.1.0, Page 23
  1480.  
  1481.  
  1482.  
  1483.            Automatic Transactions
  1484.             1  -  1234.56  D  Salary
  1485.            15  h   765.43  w  First National Bank, mortage payment
  1486.             5  H    88.00  -  United Power & Light, utilities
  1487.  
  1488.       Date is a single number representing the date of the month when the
  1489.       automatic transaction should occur.  Category will be converted to upper
  1490.       case; a hyphen (-) will be interpreted as a blank (default) category.
  1491.       Amount should always be positive; any leading minus sign(s) will be
  1492.       ignored.  If the deposit field is D or d, a deposit transaction will be
  1493.       indicated; any other non-space character will define a withdrawal.
  1494.       After skipping any white space following the Deposit field, remaining
  1495.       characters on the line will be considered part of the Payee field.  Note
  1496.       that abreviations will not be expanded for automatic transactions.
  1497.  
  1498.       Each abreviation definition must appear on a separate line and must
  1499.       contain two fields separated by white space.  The first three characters
  1500.       on each line (including white space) will be converted to upper case and
  1501.       interpreted as an abreviation.  Any white space following the first
  1502.       three characters will be ignored.  Up to 42 remaining characters on the
  1503.       line (including white space) will replace the abreviation whenever it is
  1504.       recognized in the Payee field.  Examples include
  1505.  
  1506.            ABREVIATIONS
  1507.            FNB  First National Bank
  1508.            sal  Salary
  1509.            Uni  United Power & Light
  1510.  
  1511.       The title line displayed by CHECKS and CLEARS may be customized by
  1512.       including the desired text on a separate line following the TITLE
  1513.       keyword in the information file.  The first 62 characters will be
  1514.       interpreted as the new title and displayed on the title line.  If more
  1515.       than one line of text appears after the TITLE keyword and before the
  1516.       next keyword, only the last will be retained as the new title.  An
  1517.       example is
  1518.  
  1519.            Title
  1520.            Jones Family Check Register
  1521.  
  1522.       Each of the three sets of information recognized in an INF file may
  1523.       appear in any order and may be included more than once.  That is, you
  1524.       may define abreviations, then a title, then more abreviations, then
  1525.       automatic transactions, then another title, etc.  The recommended order
  1526.       is automatic transactions, followed by abreviations, and finally a
  1527.       title.
  1528.  
  1529.       A special character will be recognized whenever it appears in the
  1530.       information file.  If a vertical bar (|, which is ASCII 7C hex or 124
  1531.       decimal) appears on any line, then that character and all following
  1532.       characters on the same line will be ignored.  This permits you to
  1533.       include comments in the INF file, which will not be included in the
  1534.       definitions.  A complete INF file example follows:
  1535.  
  1536.       Information File                                       v.1.0, Page 24
  1537.  
  1538.  
  1539.  
  1540.            | Information File for Check Register Program
  1541.            AUTOMATIC TRANSACTIONS
  1542.             1  -  1234.56  D  Salary|    1st of each month
  1543.            15  h   765.43  w  First National Bank, mortage payment
  1544.             5  H    88.00  -  United Power & Light, utilities
  1545.            ABREVIATIONS
  1546.            FNB  First National Bank|     use for deposits or cash withdrawals
  1547.            sal  Salary
  1548.            Uni  United Power & Light|    gas and electric company
  1549.            TITLE
  1550.            Jones Family Check Register
  1551.            | End of Information File   
  1552.  
  1553.       The INF file must carry the same filename as the check register database
  1554.       DAT file; for example, FAMILY.INF goes with FAMILY.DAT.
  1555.  
  1556.  
  1557.  
  1558.                                   GETTING STARTED
  1559.  
  1560.       Beginning a New Register
  1561.  
  1562.       The simplest way to begin a new register is to create an information
  1563.       file with the default name CHECKS.INF.  Use a familiar ASCII text editor
  1564.       such as ED or WordStar (Non-document mode) as described in the preceding
  1565.       section.  Define any automatic transactions, which might include salary
  1566.       deposits, mortgage payments, or checking account fees.  Add abreviations
  1567.       for utility companies, loan companies, credit cards, supermarkets, etc.
  1568.       Then compose a title for your personalized register.
  1569.  
  1570.       Place CHECKS.COM, CLEARS.COM, and CHECKS.SCR (installed for your screen)
  1571.       on one disk in drive A and CHECKS.INF on another disk in drive B.  At
  1572.       the A> prompt, type
  1573.  
  1574.            CHECKS B:
  1575.  
  1576.       The program will indicate that CHECKS.DAT is not available, but you
  1577.       should choose to continue.  You will then be presented with an empty
  1578.       register.
  1579.  
  1580.       Find the oldest uncleared entry in your previous paper check register.
  1581.       Determine the account balance which existed prior to that transaction,
  1582.       and enter the balance amount into the new register as a deposit (DEP).
  1583.       Call that entry something like "Current Balance", and mark it cleared
  1584.       (CLR).  Then proceed to transfer all remaining transactions from your
  1585.       previous register to your new register, marking them CLR if appropriate.
  1586.       When completed, you may wish to order (^KO) and/or print (^KP) the
  1587.       result.  Finally, use ^KD to quit the program.
  1588.  
  1589.       You should observe that CHECKS.DAT and CHECKS.CLR have been added to
  1590.       drive B.  You may wish to investigate these files by restarting CHECKS
  1591.       or by executing CLEARS (in the same manner as CHECKS).
  1592.  
  1593.       Getting Started                                        v.1.0, Page 25
  1594.  
  1595.  
  1596.  
  1597.       Insufficient Disk Space
  1598.  
  1599.       It is usually more convient to have CHECKS.INF, CHECKS.DAT, and
  1600.       CHECKS.CLR on the same disk as CHECKS.COM, CLEARS.COM, and CHECKS.SCR.
  1601.       That way, the program may be started simply by inserting the disk in
  1602.       drive A and typing at the A> prompt
  1603.  
  1604.            CHECKS
  1605.  
  1606.       However, you must remember that the DAT file may grow to be 7 KB, there
  1607.       will probably be a BAK file of the same size, the CLR file can be up to
  1608.       20 KB, and there must be sufficient space for a copy of the CLR file
  1609.       while appending cleared entries.  Therefore, you should verify that the
  1610.       disk can hold about 54 KB in addition to the INF, SCR, and two COM
  1611.       files.  If you wish, CLEARS.COM need not be on the same disk.
  1612.  
  1613.       If you run short of disk space while executing either Done (^KD) or Save
  1614.       (^KS), the best way to recover is to remove the disk when prompted and
  1615.       replace it with a formatted disk having about 7 KB free space; make sure
  1616.       that the physical write protect tab is disabled, so that it is possible
  1617.       to write on the disk.  Do this even if the removed disk contains the COM
  1618.       and SCR files, since these are not required after the program has
  1619.       started.  Then use ^KS followed by ^KQ (Quit).  Finally, put the INF and
  1620.       CLR files from the old disk together with the DAT file from the new
  1621.       disk, making sure that there is enough free space left over to match the
  1622.       size of CLR and DAT combined.  Restart the Check Register Program to
  1623.       verify that your data was recovered properly.
  1624.  
  1625.  
  1626.  
  1627.                                       COMMANDS
  1628.  
  1629.       This section describes each command recognized by the Check Register
  1630.       Program.  The commands are shown on the left side of the page, along
  1631.       with any applicable synonyms.  The description of each command appears
  1632.       on the right side.  Commands are grouped according to logical function.
  1633.  
  1634.       The carat symbol (^) indicates use of the CONTROL key in conjunction
  1635.       with another key, in a manner which is analogous to the use of SHIFT to
  1636.       type an upper case letter.  The second half of a two key command may be
  1637.       entered by pressing either the lower case, upper case, or CONTROLed
  1638.       form; for example, ^Qc, ^QC, and ^Q^C all move to the bottom of the
  1639.       check register.
  1640.  
  1641.       Cursor Movement Commands
  1642.  
  1643.       ^D                  Move cursor right one character if in Payee field;
  1644.                           otherwise, move right one field or subfield.
  1645.  
  1646.       ^S or ^H            Move cursor left one character if in Payee field;
  1647.          or BACKSPACE     otherwise, move left one field or subfield.
  1648.  
  1649.       ^E                  Move cursor up one line if below the first line.
  1650.  
  1651.       ^X                  Move cursor down one line if above the last line.
  1652.  
  1653.       Commands                                               v.1.0, Page 26
  1654.  
  1655.  
  1656.  
  1657.  
  1658.       ^F or TAB or ^I     Move cursor right one word if in Payee field;
  1659.                           otherwise, move right one field or subfield.
  1660.  
  1661.       ^A                  Move cursor left one word if in Payee field;
  1662.                           otherwise, move left one field or subfield.
  1663.  
  1664.       RETURN              Move cursor right one field or subfield.
  1665.  
  1666.       /                   Only while in Date field, move cursor right one
  1667.                           subfield.
  1668.  
  1669.       ^R                  Scroll up one page.
  1670.  
  1671.       ^C                  Scroll down one page.
  1672.  
  1673.       ^W                  Scroll up one line, if below first line.
  1674.  
  1675.       ^Z                  Scroll down one line, if above last line.
  1676.  
  1677.       ^QW                 Continuously scroll up one line at a time.  Speed is
  1678.                           adjustable by typing a single digit, 1 for fast thru
  1679.                           9 for slow.  Press any non-digit key to stop
  1680.                           scrolling.
  1681.  
  1682.       ^QZ                 Continuously scroll down one line at a time.  Speed
  1683.                           is adjustable by typing a single digit, 1 for fast
  1684.                           thru 9 for slow.  Press any non-digit key to stop
  1685.                           scrolling.
  1686.  
  1687.       ^QR                 Jump to beginning of register.
  1688.  
  1689.       ^QC                 Jump to end of the register.
  1690.  
  1691.       ^QD                 Jump to last field on the line.
  1692.  
  1693.       ^QS or ^QH          Jump to first field on the line.
  1694.  
  1695.       ^QE                 Jump to top register line displayed on the screen,
  1696.                           but stay within the same field.
  1697.  
  1698.       ^QX                 Jump to bottom register line displayed on the
  1699.                           screen, but stay within the same field.
  1700.  
  1701.       Editing Commands
  1702.  
  1703.       ^V                  Toggle INSERT mode if in Payee field; otherwise, not
  1704.                           applicable.
  1705.  
  1706.       ^G                  Delete the character at the cursor.  Not applicable
  1707.                           if in Deposit or Clear field.
  1708.  
  1709.       DEL (DELETE) or ^_  Delete the character preceding the cursor if in
  1710.                           Payee field; otherwise, same as ^G.
  1711.  
  1712.       Commands                                               v.1.0, Page 27
  1713.  
  1714.  
  1715.  
  1716.       ^T                  Delete balance of word if in Payee field; otherwise,
  1717.                           not applicable.
  1718.  
  1719.       ^QY                 Delete from cursor to end of field if in Payee
  1720.                           field; otherwise, not applicable.
  1721.  
  1722.       ^QDEL or ^Q^_       Delete from beginning of field to but not including
  1723.                           cursor if in Payee field; otherwise, not applicable.
  1724.  
  1725.       ^N                  Insert a new entry at the line containing the
  1726.                           cursor.  Move existing lines down.
  1727.  
  1728.       ^Y                  Delete the line containing the cursor.
  1729.  
  1730.       ^U                  Undo most recent deletion.  If in Date subfield or
  1731.                           Amount field, restore previous value.  If in Payee
  1732.                           field, restore last deleted character.  Otherwise,
  1733.                           insert previously deleted line.
  1734.  
  1735.       Calculator Commands (while in the Amount field)
  1736.  
  1737.       +                   Add to current amount.
  1738.  
  1739.       -                   Subtract from current amount.
  1740.  
  1741.       =                   Display calculated result as new amount.
  1742.  
  1743.       m+                  Add current amount to Memory.
  1744.  
  1745.       m-                  Subtract current amount from Memory.
  1746.  
  1747.       mc                  Clear Memory to zero.
  1748.  
  1749.       mr                  Recall from Memory to Amount field.
  1750.  
  1751.       Save, Quit, and Done Commands
  1752.  
  1753.       ^KS                 Rename filename.DAT to be filename.BAK, then save
  1754.                           all entries, cleared and uncleared, in a new DAT
  1755.                           file.
  1756.  
  1757.       ^KQ                 If there have been no changes, quit immediately;
  1758.                           otherwise, verify that the current register is to be
  1759.                           abandoned without saving changes.
  1760.  
  1761.       ^KD or ^KX          Append all cleared entries to filename.CLR after
  1762.                           adding to BALANCE BROUGHT FORWARD amount for each
  1763.                           category.  Rename filename.DAT to be filename.BAK,
  1764.                           then save all uncleared and BALANCE BROUGHT FORWARD
  1765.                           entries in a new DAT file.  Quit the program.
  1766.  
  1767.       Commands                                               v.1.0, Page 28
  1768.  
  1769.  
  1770.  
  1771.       Miscellaneous Commands
  1772.  
  1773.       ^KO                 Order all entries by Date and Payee, or Payee and
  1774.                           Date, or Category and Date, or Amount and Date.
  1775.  
  1776.       ^O or ^B            Order all entries from the current cursor line thru
  1777.                           the remainder of the register, with the same options
  1778.                           as ^KO.
  1779.  
  1780.       ^KP or ^P           Print the complete check register.
  1781.  
  1782.       ^KA                 Display all abreviations.
  1783.  
  1784.       ^KR                 Display reconcilition report.
  1785.  
  1786.       ^J or LINEFEED      Display help.
  1787.  
  1788.       ESCAPE              Only when queried for a Yes/No response, toggle
  1789.                           to opposite default.
  1790.  
  1791.       All of the commands described in this section are applicable to the
  1792.       CHECKS program.  All perform similar functions when used with the CLEARS
  1793.       program, except for ^V, ^T, ^N, ^QY, ^QDEL, and ^KA.  Notice that ^L is
  1794.       the only alphabetic control character which is not used as a command.
  1795.  
  1796.  
  1797.  
  1798.                                     FUTURE PLANS
  1799.  
  1800.       Future plans for the Check Register Program include:
  1801.  
  1802.         o  Porting from CP/M-80 to MS/PC-DOS and to CP/M-86 and its
  1803.            derivatives.
  1804.  
  1805.         o  Relaxing memory constraints for 16-bit computers.
  1806.  
  1807.         o  Addition of a program to print new checks which have been entered
  1808.            into the check register.
  1809.  
  1810.         o  Possible addition of a field for check number.
  1811.  
  1812.         o  Possible extension of the Payee field, with horizontal scrolling
  1813.            when the number of characters exceeds the display window.
  1814.  
  1815.         o  Implementation of ideas submitted by you.
  1816.  
  1817.       Let me know what you think.
  1818.